<!-- 我的弹窗 -->

<template>
  <WebModal path="map" small @close="map_setOne">
    <WebForm path="map">
      <FormSelect
        label="分组名称"
        bind="labelGroupId, labelGroupName, labelGroupCode"
        :dict="group_selectDict"
        disabled
      />

      <FormSelect label="标签类型" bind="typeValue, typeLabel" :dict="map_DICT.LABEL_TYPE" disabled />

      <FormTree :label="`所在${CORE.MAP.REGION}`" bind="areaId, areaName" :dict="CORE.REGION.DICT" allName required />

      <MyProperty />
    </WebForm>
  </WebModal>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'MyModal',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb('map', 'map_'), CORE.mixSelect('group', 'group_'), CORE.mixOne('group', 'group_')],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听分组详情
     */
    group_one(one) {
      if (one.properties) {
        this.setProperties(one.properties) // 设置属性
        this.group_setOne() // 清除分组
      }
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 设置属性
     */
    setProperties(properties) {
      const { areaMapId, labelGroupId } = this.map_one

      this.map_one.properties = properties.map((item) => {
        return {
          ...item,
          areaMapId,
          areaMapLabelGroupId: labelGroupId,
          labelGroupPropertyId: item.id,
          propertyValue: undefined,
        }
      })
    },
  },
}
</script>
